// 学习不定参宏函数的使用

#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>


#define LOG(fmt, ...) printf("[%s:%d]" fmt, __FILE__, __LINE__, ##__VA_ARGS__);

//C语言中不定参函数的使用，不定参数据的访问

void PrintNum(int count,...)
{
    va_list ap;
    va_start(ap,count);
    int i = 0;
    for(i = 0;i< count;i++)
    {
        int num = va_arg(ap,int);
        printf("param[%d]:%d\n",i,num);
    }
    va_end(ap);
}

void myprintf(const char* fmt,...)
{
    va_list ap;
    va_start(ap,fmt);
    char* res;
    int ret = vasprintf(&res,fmt,ap);
    if(ret != -1)
    {
        printf(res);
        free(res);
    }
    va_end(ap);
}

int main()
{
    LOG("谢尚威\n");
    PrintNum(2,20,30);
    PrintNum(5,6,7,8,9,10);
    myprintf("%s-%d\n","谢尚威",21);
    return 0;
}